home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-02-07 | 56.1 KB | 1,302 lines |
- Der GME 1
- ________________________________________________________
-
-
-
-
-
-
-
-
-
-
-
- Der Golem-Megamax-Editor
-
- GME
-
-
-
-
-
-
-
- Version 1.0 ohne GEM-Fenster
-
- (C) 1989 by Johannes Leckebusch
-
- Lizenziert für Megamax Modula-2
- Der GME 2
- ________________________________________________________
-
-
- Inhalt
-
- 1 Einführung
- 1.2 Die wichtigsten Eigenschaften
-
- 2.1 Installieren des GME als Shell-Editor
-
- 3.1 Eine einfache Programmiersitzung
- 3.2 Starten des Editors mit einem Text
-
- 4. Übersicht über alle Befehle des GME
- 4.1 Menü "GME"
- 4.2 Datei-Menü
- 4.3 Block-Menü
- 4.4 Marken-Menü
- 4.5 Suchen-Menü
- 4.6 Editieren-Menü
- 4.7 Programm-Menü
- 4.8 Reine Tastaturbefehle
-
- 5.1 Tastatur konfigurieren
- 5.2 Editor mit/ohne GME.GME konfigurieren
-
- 6. Nachwort
- Der GME 3
- ________________________________________________________
-
-
- 1.1 Einführung
-
- Der GME ist ein professioneller Programmeditor. Er wurde aus dem G2E
- (Golden Two Editor) abgeleitet, der seinerseits ein Nachkomme des legendären
- TLGE (The Little Golem Editor) ist.
-
- Der GME wurde speziell an das Megamax-Modula-Programmiersystem
- angepaßt. Die 1001 Features des G2E wurden einerseits auf das wesentliche
- reduziert, andererseits so ergänzt, daß der Editor optimal mit der Shell des
- MM2-Systems zusammenarbeitet. Die Benutzerführung ist ein Kompromiß
- zwischen allgemeinen GEM- Konventionen (natürlich Mausbedienung!) und den
- Eigenheiten eines besonderen Editorkonzeptes.
-
-
- 1.2 Die wichtigsten Eigenschaften:
-
- Wertet Fehlermeldungen des MM2-Compilers aus (direkte Anzeige der
- Fehlerposition in der Source, Anzeige der Fehlermeldung im Klartext)
-
- Kann Compiler, Make und Loadtime-Linker starten (offline, das heißt,
- die Dateien werden gespeichert und der Editor verlassen)
-
- Startet Compiler (online) aus dem Speicher (ohne den Editor zu
- verlassen, Compiler liest Text aus dem Speicher)
-
- Fullscreeneditor auch mit seitwärts scrollen, dh. auch Zeilen mit mehr
- als 80 Zeichen können bearbeitet werden
-
- Alle üblichen Grundfunktionen wie Suchen/Tauschen, Block markieren,
- Cut/Copy-Paste oder Block sichern, Block einrücken
-
- Bedienung über Maus und Tastatur parallel, volle Ausnutzung der
- Cursor- und Funktionstasten, zusätzlich konfigurierbare Belegung von
- Control- und Alternate-Kombinationen
-
- Lädt beliebig viele Texte in den Speicher (soweit Speicher reicht),
- schnelles Umschalten zwischen Vorder- und Hintergrundtext,
- Übernehmen von Textteilen aus einem Text in einen anderen, direktes
- Compilieren des jeweils angezeigten Textes aus dem Speicher
-
- Abspeichern der Konfiguration (Autoindent, Overwrite/Insert, Wort-
- oder Mustersuche usw.), wahlweise Abspeichern der aktuellen
- Textpositionen und Merkpositionen in Zusatzdatei zu jedem Text
- Der GME 4
- ________________________________________________________
-
-
- 2.1 Installieren des GME als Shell-Editor
-
- Um mit dem Editor arbeiten zu können, sollte dieser in der Shell installiert
- werden. Dies geschieht einfach durch Anmelden des Editors als Arbeitseditor
- (Eintragen des Namens "GME" in den Shell-Parametern für den Editor).
- Weitere Parameter: Shell braucht weder für den Editor nach den Sourcen zu
- suchen noch die Fehlermeldung nach einem Compiler-Fehler anzuzeigen.
- Temporäre Dateien sind nicht nötig, in der Argumentzeile können alle Infor~
- mationen übergeben werden. Vorteilhaft ist es, den Editor resident zu laden
- (sofern genügend Speicher vorhanden ist) - das geschieht durch die Anweisung
- "Load GME" in der Batch-Datei (üblicherweise "MM2SHELL.M2B").
-
- Zum Editor gehört das Resource-File "GMEMENUE.RSC", das sich im gleichen
- Ordner wie die Shell oder auf einem der in DefaultPath (s. Shell-Batch)
- eingetragenen Pfade befinden sollte.
- Der GME 5
- ________________________________________________________
-
-
- 3.1 Eine einfache Programmiersitzung
-
- Um ein Programm einzugeben, zu compilieren (in Maschinenkode übersetzen)
- und von Textfehlern zu befreien, brauchen Sie den Editor nicht zu verlassen.
- Auch nicht, um verschiedene Module, die eventuell zu einem Programm
- gehören, zu bearbeiten. Doch fangen wir mit dem einfachsten Fall an.
-
- Wenn Sie ein neues Programm eingeben wollen, also keine vorhandene Datei
- bearbeitet werden soll, ist eine neue, leere Arbeitsdatei anzulegen (mit Taste
- N) oder ein Leername bei einer bestehenden Arbeitsdatei oder der aktuellen
- Datei einzugeben. Starten Sie den Editor durch E (für die Arbeitsdatei) bzw.
- Control-E (wenn Sie die 'aktuelle Datei' bearbeiten wollen).
-
- Bild 1
-
-
-
-
-
-
-
-
- Der Editor ist, wenn er resident geladen wurde, nach etwa 1,5 Sekunden
- arbeitsbereit. Er zeigt die GEM-Menüleiste (in Bild 1 und den folgenden), einen
- grauen Balken und darunter, schwarz unterlegt, die Statuszeile. In dieser Zeile
- wird normalerweise die Anzahl Zeilen der Datei nach "ZL" angezeigt, danach
- die Zeile, in der sich der Cursor befindet, die Spalte und der Arbeitsmodus
- (Einfügen oder Überschreiben, Indent oder keine Anzeige für die halbauto~
- matische Einrückung). In bestimmten Situationen erscheinen auch andere
- Meldungen in dieser Zeile, wie zum Beispiel "Compiler läuft..." oder eine
- Fehlermeldung (siehe unten). In Bild 1 sehen Sie ein Rufzeichen, das andeutet,
- daß der Text bearbeitet wurde und in dieser Fassung noch nicht gesichert ist.
- Besitzt der Text bereits einen Dateinamen, unter dem er gesichert oder
- geladen wurde, so wird auch dieser zusammen mit dem gesamten Pfad
- angezeigt.
-
- Bild 2
-
-
-
-
-
-
- Geben Sie nun den in Bild 1 zu erkennenden Programmtext ein. Dann wählen
- Sie im Programm-Menü den Eintrag "Compilieren" (Bild 2). Sie können statt
- dessen auch Alternate-D drücken, also die Alternate-Taste festhalten und
- dann D. Dies wird durch die Raute und das D im Menüeintrag angezeigt. Ein
- Der GME 6
- ________________________________________________________
-
-
- "^" in der Tastenbezeichnung bedeutet die Control-Taste, ein kleines "s" die
- Shift-Taste. Einige der Tastenbefehle können je nach Konfiguration verschieden
- sein, beachten Sie die Anzeige in der GEM-Menüleiste.
-
- Bild 3
-
-
-
- Es erscheint sofort die Anzeige "Compiler läuft" in der Statuszeile (Bild 3).
- Diese Anzeige bleibt so lange erhalten, wie der Compiler zur Übersetzung
- braucht oder bis er einen Fehler findet. In unserem Fall (Bild 4) erscheint sehr
- rasch eine Fehlermeldung und der Cursor springt auf den ersten Buchstaben
- des inkriminierten "Bezeichners".
-
- Bild 4
-
-
-
-
-
-
- Der Compiler kennt das Wort "WriteString" nicht. Das liegt daran, daß Modula
- eine bibliotheksorientierte Sprache ist - alle Ein-/Ausgabeprozeduren müssen
- aus einer geeigneten Library "importiert" werden.
-
- Bild 5
-
-
-
-
-
-
-
-
-
-
- Beachte: Bei der Bearbeitung von umfangreichen Texten kann es
- vorkommen, daß Sie die letzte Fehlermeldung noch einmal anschauen
- wollen. Sobald Sie die Fehlerzeile mit dem Cursor verlassen,
- verschwindet die Fehlermeldung jedoch aus der Anzeige der Statuszeile.
- Rufen Sie einfach den Befehl "Zur Fehlermeldung" (Bild 5) auf. Der
- Cursor springt wieder an die Fehlerstelle, und diese wird erneut
- angezeigt. Dies ist so lange möglich, wie kein neuer Compilerlauf
- stattgefunden hat (der entweder einen anderen Fehler meldet oder das
- Programm fehlerfrei übersetzt).
- Der GME 7
- ________________________________________________________
-
-
-
- Bld 6
-
-
-
-
-
-
-
- Tragen Sie nun die in Bild 6 gezeigte "FROM...IMPORT"-Anweisung nach. Wenn
- Sie keinen weiteren Fehler gemacht haben, so erscheint nach einem neuen
- Compilerlauf die Anzeige des Pfades, auf den die übersetzte Codedatei
- geschrieben wurde, sowie deren Länge in Bytes.
-
- Bild 7
-
-
-
-
-
-
-
-
-
-
-
-
-
- Wenn Sie den Editor verlassen wollen, geben Sie (Bild 7) den "Beenden"-Befehl
- ein (es gibt noch andere, eventuell elegantere Möglichkeiten, den Editor zu
- verlassen, die in der Gesamtübersicht des Datei-Menüs weiter unten
- beschrieben werden). Statt dessen können Sie auch Alternate-X drücken.
-
- Bild 8
-
-
-
-
-
-
-
- Der GME wacht sorgfältig darüber, daß keine Arbeit verlorengeht. Obwohl Sie
- ihm keinen Auftrag gegeben haben, den soeben eingegebenen Text (der sich
- bisher nur im Speicher befindet!) zu sichern, ermahnt er Sie (Bild 8), ihn
- zu speichern. Sie haben hier drei Möglichkeiten. Zunächst einmal erkennen Sie
- an der Anzeige Text "" editiert! , daß der Text noch keinen Dateinamen besitzt
- - dieser würde nämlich sonst zwischen den Anführungszeichen erscheinen.
- Der GME 8
- ________________________________________________________
-
-
- Klicken sie auf JA (oder drücken Sie die Return-Taste, da dies der Default~
- button ist - erkennbar an der dickeren Umrandung), so wird der Editor den
- Text ungefragt speichern - sofern er den Dateinamen schon kennt. In diesem
- Fall würde allerdings die Filebox erscheinen und die Eingabe eines Dateinamens
- verlangen (Bild 9). Möchten Sie den Text nicht unter dem angezeigten Namen
- speichern, oder wollen Sie überhaupt in den Editor zurück, so klicken Sie auf
- ABBRUCH. Falls Sie aber auf NEIN klicken, wird der Text gelöscht und der
- Editor verlassen.
-
- Genaugenommen wird die im Speicher befindliche Textversion
- verworfen. Sollte der Text bereits früher gesichert worden sein, so
- wird diese Datei natürlich nicht gelöscht!
-
- Bild 9
- Der GME 9
- ________________________________________________________
-
-
- 3.2 Starten des Editors mit einem Text
-
- Der Editor kann auf verschiedene Weise bereits mit einem Text gestartet
- werden, den er automatisch lädt und anzeigt. Beispielsweise können Sie aus
- einem der Fenster in der Shell einfach mit der Maus einen Textnamen auf das
- Editor-Icon "ziehen". Ziehen Sie einen Textnamen statt dessen auf den
- Compiler, so wird der Text übersetzt. Wenn dabei ein Fehler erkannt wird,
- startet die Shell anschließend automatisch den Editor mit diesem Text,
- natürlich wird dabei auch sogleich die Fehlerstelle angezeigt. Die weitere Arbeit
- geschieht wie oben beschrieben, dh. Sie können z. B. den Fehler korrigieren
- und zur Kontrolle aus dem Speicher compilieren. Da der Text bearbeitet
- wurde, achtet der Editor automatisch darauf, daß Sie die veränderte Fassung
- abspeichern - oder willkürlich verwerfen.
-
- Beachte: Beim Compilieren aus dem Speicher dürfen keine Include-
- Anweisungen im Programmtext stehen, in diesem Fall kommt eine
- Fehlermeldung. Sie müssen solche Quellen offline compilieren, also mit
- dem Befehl "Ende & Comp." im Programm-Menü. Dabei werden alle
- bearbeiteten Texte vorher abgespeichert und der Editor verlassen,
- danach startet automatisch der Compiler.
- Der GME 10
- ________________________________________________________
-
-
- 4. Übersicht über alle Befehle in der GEM-Menüleiste
-
- Im folgenden finden Sie eine Übersicht der Editorbefehle in der Ordnung, wie
- sie in der GEM-Menüleiste erscheinen. Der Editor besitzt über 100 Befehle, die
- meisten davon werden in der Menüleiste aufgeführt. Fast alle Befehle können
- außerdem über Funktionstasten oder/und Steuerzeichenfolgen ausgelöst
- werden. Wir sprechen im folgenden immer beispielsweise von dem Befehl
- "Sichern" (s. unten), wobei es gleichgültig ist, ob dieser durch Anklicken der
- betreffenden Menüleiste, durch Eingabe der dort angezeigten Tastenkombination
- oder durch eine Funktionstaste ausgelöst wird.
-
- Beachte: Die Befehle werden wie folgt notiert (Beispiele aus dem Menü
- "Editieren" u. "Programm"):
-
- Insert: Taste "Insert"
- sInsert: Taste "Insert" mit festgehaltener Shift-Taste
- ^J: Taste "J" mit festgehaltener Control-Taste
- Raute D: Taste "D" mit festgehaltener Alternate-Taste
-
- Die Steuerzeichenfolgen orientieren sich an Wordstar beziehungsweise an den
- Turbo-Editoren von Borland, jedoch ist der GME weitaus komfortabler. Alle
- wichtigen Befehle sind jedoch über Funktionstasten (Cursortasten) erreichbar,
- auch können die Steuertasten- und Funktionstasten-Zuordnungen geändert
- werden (siehe Abschnitt "Anpassen der Tastaturbelegung").
-
- Beachte: Falls in den Menüs Ihres Editors andere Tastenabkürzungen
- für die Befehle angezeigt werden, haben Sie einen abweichend
- konfigurierten Editor erhalten. Falls Sie selbst die Tastaturbelegung der
- Befehle ändern, müssen Sie die entsprechende Anzeige mit dem
- KResource-Programm "NRSC_ASH.PRG" selbst im Resource-File
- nachtragen (falls Sie dies wünschen).
- Der GME 11
- ________________________________________________________
-
-
- 4.1 Menü "GME"
-
-
-
-
-
-
-
-
-
-
-
-
- Der erste Eintrag ruft eine Box mit der Copyright-Anzeige des Editors und der
- Versionsnummer. Eventuelle weitere Einträge sind für Accessories vorgesehen.
-
- Sollten Sie Probleme mit oder Fragen zu Ihrem GME haben, so ist es
- nützlich, stets die Versionsnummer anzugeben. Sollte diese durch
- Manipulieren der Resource-Datei verändert sein, so gilt im Zweifelsfalle
- die beim Laden oder Speichern in der Statuszeile angezeigte Version!
- Diese ist fest im Programmcode enthalten.
- Der GME 12
- ________________________________________________________
-
-
- 4.2 Das Datei-Menü
-
-
-
-
-
-
-
-
-
-
- Das Datei-Menü enthält alle Befehle zum Laden und Speichern von Texten.
- Wenn der Editor infolge eines Übersetzungsfehlers gestartet wird oder
- dadurch, daß man das Icon einer Textdatei auf das Editor-Icon schiebt, lädt er
- automatisch den betreffenden Text. Unabhängig davon können jederzeit weitere
- Texte geladen werden. Alle Texte befinden sich gleichzeitig im Speicher (dieser
- muß ausreichend groß sein). Von einem Text zum anderen gelangen Sie über
- das "Editieren"-Menü (siehe unten).
-
- Die ersten beiden Einträge, von denen einer mit einem Häkchen gekennzeichnet
- ist, stellen "Schalter" dar. Schalter sind stets die ersten Einträge in einem
- Menü (in Datei, Block, Suchen und Editieren).
-
- Beachte: Die Häkchen-Einstellungen können mit dem --> "Parameter
- sichern"-Befehl in die Datei GME.GME gespeichert werden, so daß sie
- beim nächsten Start des Editors automatisch wiederkehren - siehe
- unten!
-
- Neu
-
- Es wird ein neuer Text im Speicher angelegt. Damit können Sie jederzeit, auch
- wenn der Editor bereits mehrere Programmdateien geladen hat, den Entwurf
- eines neuen Programm-Moduls beginnen. Es erscheint ein leerer Bildschirm
- (die anderen Texte sind nach wie vor vorhanden, siehe Menü "Editieren"). Dazu
- wird ein neuer "Textpuffer" angelegt. Siehe auch --> Schließen. Beim
- Verlassen des Editors oder bei Eingabe eines Sicherungs-Befehls wird die
- Eingabe eines Dateinamens verlangt.
-
- Öffnen...
-
- Es wird eine neue Datei geladen, dh. es erscheint die Filebox. Wählen Sie die
- gewünschte Datei aus oder klicken Sie auf Abbruch (in diesem Fall verbleibt
- ein leerer Textpuffer, der eventuell beim nächsten Öffnen-Befehl verwendet
- wird). Auf jeden Fall bleiben vorher im Editor geladene Texte erhalten - siehe
- Menü "Editieren". Beachten Sie, daß nur so viele und so lange Texte geladen
- Der GME 13
- ________________________________________________________
-
-
- werden können, wie der noch freie verfügbare Arbeitsspeicher Ihres
- Computers erlaubt. Kann eine Datei nicht mehr vollständig geladen werden, so
- erscheint eine Fehlermeldung ("Speicher reicht nicht"). In so einem Fall sollten
- Sie unbedingt andere Texte löschen (--> Schließen), ehe Sie weiterarbeiten und
- die betreffende Datei neu laden.
-
- Beachte: Der GME benutzt eine sehr flexible interne Speicher~
- verwaltung. Dadurch kann er beliebig viele Texte "durcheinander"
- verwalten, die sich den Arbeitsspeicher je nach Bedarf teilen - dh. ein
- Text kann sehr groß, ein anderer sehr klein sein, der gesamte freie
- Speicher steht potentiell allen Texten zur Verfügung. Mit anderen
- Worten: Es gibt keine feste Aufteilung des freien Speichers in n
- gleichgroße Abschnitte oder dergleichen. Allerdings hat dies zur
- Konsequenz, daß die Texte im Speicher mehr Platz brauchen, als dies
- ihrer Länge auf Diskette entspricht (besonders dann, wenn die Texte
- sehr viele kurze Zeilen enthalten).
-
- Einfügen...
-
- Eine Disk- oder Festplattendatei wird in den gerade bearbeiteten Text ab der
- aktuellen Cursorposition eingefügt. Sie erscheint dort als markierter Block (und
- kann mit den --> Block-Befehlen im Clipboard gemerkt werden).
-
- Sichern
-
- Der gerade bearbeitete Text wird unter dem schon vorhandenen Dateinamen
- gespeichert (es wird eine .BAK-Datei angelegt, außer wenn diese Betriebsart
- abgeschaltet ist --> "Backup anlegen" oben). Wurde noch kein Dateiname
- vergeben, so fragt der Editor durch Anzeige der Filebox danach.
-
- Sichern als...
-
- Es wird in jedem Fall die Filebox angezeigt, so daß man einen abweichenden
- Dateinamen angeben kann. Bei Return wird der vorgewählte Dateiname benutzt.
- Fehlt dieser oder klickt man auf ABBRUCH, so wird die Datei nicht gesichert.
-
- Block sichern...
-
- Es wird ein markierter Block als Datei herausgeschrieben, der Dateiname wird
- abgefragt. Wenn kein Block markiert ist, erscheint eine Alarmbox.
-
- Schließen
-
- Ein Textpuffer soll aus dem Speicher entfernt werden. Wenn der Text seit der
- letzten Sicherung verändert wurde, wird automatisch die Sequenz "Sichern
- als..." vorgeschaltet, danach wird der Textpuffer gelöscht und entfernt (der
- Der GME 14
- ________________________________________________________
-
-
- letzte Puffer kann nicht entfernt werden, dh. es muß immer mindestens einen
- Textpuffer geben solange der Editor läuft). Wenn der Puffer editiert wurde
- und nicht gespeichert wird, kann er nicht entfernt werden.
-
- Konfiguration speichern
-
- Je nachdem, ob dieser Eintrag mit einem Häkchen gekennzeichnet ist oder
- nicht, wird zu einem Text der Form "DATEI.M" eine Zusatzdatei "DATEI.GME"
- gespeichert, die individuelle Einstellungen, Cursor- und Merkpositionen etc.
- enthält. Durch Anklicken dieses Eintrags wird das Häkchen ein- oder aus~
- geschaltet.
-
- Beachte: Wenn Sie, damit der Editor schneller startet, keine GME.GME-
- Datei verwenden wollen, können Sie die Voreinstellungen beim Start
- des Editors auch im Modul GMEConfig ("GMECONFI.I") ändern, wie im
- Abschnitt 5.2 beschrieben.
-
- Backup anlegen
-
- Je nachdem, ob dieser Eintrag mit einem Häkchen gekennzeichnet ist oder
- nicht, wird beim Sichern eines Textes DATEI.XXX eine alte Datei gleichen
- Namens in DATEI.BAK umbenannt (die alte .BAK-Datei geht verloren).
-
- Einstellungen sichern
-
- Es werden die aktuellen Einstellungen (Häkchen!) in der Datei GME.GME
- gesichert (und zwar die Werte, die für den gerade angezeigten Text eingestellt
- sind). Beim nächsten Start des Editors ist dies die Standard-Voreinstellung
- aller Parameter. Für Tastaturbelegungen siehe Abschnitt "Tastatur konfi~
- gurieren" unten.
-
- Beenden
-
- Verlassen des Editors, ohne Dateien zu speichern. Falls jedoch Texte
- bearbeitet wurden, verlangt der Editor zur Sicherheit das Speichern oder
- ausdrückliche Verwerfen der Texte, siehe Bild 8 oben.
- Der GME 15
- ________________________________________________________
-
-
- 4.3 Das Block-Menü
-
-
-
-
-
-
-
-
-
- Das Block-Menü enthält Befehle, mit denen Textabschnitte gemerkt, kopiert,
- verschoben, gelöscht oder in andere Texte übertragen werden können. Dabei
- wird das Copy/Cut & Paste-Konzept nach dem Vorbild des Macintosh
- angewandt (mit kleinen Abweichungen). Das bedeutet grundsätzlich folgende
- Befehlsfolge:
-
- (1) Textabschnitt mit der Maus, Tastenbefehlen oder Menübefehlen
- markieren. Der "Block" erscheint auf dem Bildschirm hervorgehoben.
-
- (2) Nun wird der Block gemerkt, indem man ihn ins "Klemmbrett" (eine Art
- Notizblatt oder Pinwand) ablegt - dabei kann er aus dem aktuellen Text
- an der alten Position "ausgeschnitten" werden, oder es wird lediglich
- eine Kopie angefertigt (Merken).
-
- (3) Schließlich kann der Block an anderer Stelle wieder eingefügt werden -
- auch in einen anderen Text (siehe --> "Nächster Text" im Menü
- "Editieren")
-
- Wenn Sie sich Bild 12 ansehen, fallen zwei Dinge auf:
-
- * Der Schalter "GEM-Klemmbrett" hat kein Häkchen
- * Der Eintrag "Einfügen" ist gesperrt (Schattenschrift)
-
- Wenn wir den Schalter zunächst ignorieren, bedeutet dies, daß sich derzeit
- nichts auf dem Schwarzen Brett (Klemmbrett oder Clipboard) befindet. Es
- kann daher nichts in den Text eingefügt werden. Erst nach einem der Befehle
- "Ausschneiden" oder "Merken" wird der Befehl "Einfügen" verfügbar. Zuvor
- muß aber ein Block markiert werden (--> Anfang markieren, --> Ende
- markieren etc., s. unten).
-
- Normalerweise ist das "Klemmbrett" ein verdeckter Textpuffer, wird also im
- Speicher verwaltet (siehe --> "Block Editieren" unten). Einer GEM-Konvention
- zufolge kann man dieses Klemmbrett auch über sogenannte Scrap-Dateien
- (wörtlich: Kritzelblock oder Schmiertafel) mit anderen Programmen (meist
- Accessories) austauschen. Der GME ist für diese Konvention vorbereitet.
- Der GME 16
- ________________________________________________________
-
-
- Wenn Sie den Schalter "GEM-Klemmbrett" auf EIN stellen (mit Häkchen
- versehen), werden gemerkte oder ausgeschnittene Blöcke in eine Datei
- geschrieben, die sich in einem Ordner "CLIPBRD" befindet. Der GME verwendet
- hier den Dateinamen SCRAP.TXT, der vollständige Pfad lautet also
- "C:üCLIPBRDüSCRAP.TXT" (ersatzweise auch "A:üCLIPBRDüSCRAP.TXT"). Bei
- einem "Einfügen" versucht der GME also in jedem Fall, diese Datei bei der
- aktuellen Cursorposition in den gerade angezeigten Text einzufügen. Ist kein
- solcher Text vorhanden bzw. der Pfad nicht zu finden, erscheint eine Alarmbox
- mit der Meldung "Das Klemmbrett ist leer".
-
- GEM-Klemmbrett
-
- Ein- und Ausschalten des GEM-Clipboard-Mechanismus (Datei zum Daten~
- tausch mit anderen Programmen, siehe voriger Abschnitt).
-
- Ausschneiden
-
- Ein markierter Block wird aus dem Text entfernt ("ausgeschnitten") und
- gemerkt.
-
- Merken
-
- Ein markierter Block wird lediglich in das Klemmbrett kopiert und zur weiteren
- Verwendung aufbewahrt.
-
- Einfügen
-
- Ein vorher gemerkter Text (--> "Ausschneiden", "Merken") wird an der
- aktuellen Cursorposition in den angezeigten Text eingefügt.
-
- Editieren
-
- Mit diesem Befehl gelangen Sie in den normalerweise unzugänglichen
- Klemmbrett-Puffer und können diesen wie einen gewöhnlichen Text editieren.
- Ein späterer Befehl --> "Einfügen" wird den so veränderten Inhalt des
- schwarzen Brettes ab der aktuellen Cursorposition in den Text einfügen, der
- gerade angezeigt wird. In die normale Textbearbeitung kommen Sie mit dem
- --> "Beenden"-Befehl (Menü Datei) oder der Esc(ape)-Taste zurück.
-
- Anfang markieren
-
- Festlegen eines Blockanfangs. Bringen Sie zuvor den Cursor auf die
- gewünschte Anfangsposition. Geht auch mit Mausklick (linke Taste).
- Der GME 17
- ________________________________________________________
-
-
- Ende markieren
-
- Festlegen eines Blockendes. Bringen Sie zuvor den Cursor auf die gewünschte
- Endposition. Der Textabschnitt wird anschließend hervorgehoben dargestellt.
- Danach sollten Sie einen der Befehle --> "Ausschneiden" oder --> "Merken"
- wählen. Geht auch mit Mausklick (Shift und linke Taste oder mit der rechten
- Maustaste).
-
- Zeile markieren
-
- Es wird die Zeile, in der sich der Cursor befindet, als Block markiert.
-
- Alles markieren
-
- Es wird der gesamte Text, der gerade angezeigt ist, als Block markiert.
-
- Bemerkung: Es gibt einen weiteren Befehl, der nicht in der Menüleiste
- aufscheint: Blockmarken aufheben (Standardeinstellung ^KH).
- Der GME 18
- ________________________________________________________
-
-
- 4.4 Das Marken-Menü
-
-
-
-
-
-
-
-
- Marken erleichtern die Orientierung in einem Text. Der GME erlaubt es, in
- jedem im Speicher befindlichen Text unabhängig von den anderen drei
- "Benutzermarken" zu setzen. Er merkt sich deren Position, solange die Texte
- bearbeitet werden (beim Abspeichern mit --> "Konfiguration speichern" EIN
- auch in einer Zusatzdatei). Zusätzlich merkt er sich zu jedem Text die aktuelle
- Cursorposition, die zuletzt editierte Textstelle und die letzte Compilerfehler~
- meldung. Das kann besonders nützlich sein, wenn man in mehreren Modulen
- Compilerfehler erhält, die vielleicht eine gemeinsame Ursache haben. Oder
- wenn Sie bei der Erstellung eines Programms mehrfach bestimmte Stellen in
- verschiedenen Quelltexten von Bibliotheksmodulen nachschauen wollen.
-
- Setze Marke 1 bis 3
-
- Die augenblickliche Cursorposition im angezeigten Text wird gemerkt.
-
- Zu Marke 1 bis 3
-
- Der Cursor springt auf die gemerkte Stelle im jeweiligen Text. Wurde keine
- Stelle gemerkt, springt er an den Textanfang.
-
- Zu Zeile...
-
- Der Editor verlangt die Eingabe einer Zeilennummer und springt dann zu
- dieser. Ist die Zeilennummer zu groß, springt er an das Textende. Dieser
- Befehl ist oft nützlich, wenn man eine Textstelle "ungefähr im zweiten Drittel
- der Source" sucht, oder wenn ein Mitprogrammierer sagt: "Ändere mal den
- Befehl in Zeile 345 folgendermaßen...".
-
- Letzte Position
-
- Der Cursor springt auf die zuletzt editierte Position im angezeigten Text.
-
- Zur Fehlermeldung
-
- Der Cursor springt auf die zuletzt vom Compiler gemeldete Fehlerstelle und
- zeigt die Fehlermeldung an. Gibt es keine solche, springt er an den Textanfang
- und es erscheint lediglich die Meldung "Compilerinfo" oder die Daten der
- übersetzten Codedatei.
- Der GME 19
- ________________________________________________________
-
-
- 4.5 Das Suchmenü
-
-
-
-
-
-
-
-
-
- Ein Editor ohne komfortable Suchbefehle ist heute undenkbar. Der GME ist mit
- einem modernen Suchalgorithmus ausgestattet, der einen Begriff um so
- schneller findet, je länger er ist (vielleicht im Gegensatz zu dem, was man
- intuitiv erwarten möchte - bei sehr langen Quellen können Sie sich diese
- Eigenschaft gegebenenfalls zunutze machen). Selbstverständlich kann man
- vorwärts und rückwärts suchen, und man kann bestimmen, ob ein Begriff mit
- oder ohne Berücksichtigung der Groß-/Kleinschreibung (in Modula sehr
- wichtig!), ob als Teilwort oder nur als ganzes Wort gefunden werden soll.
- Natürlich läßt sich ein Suchbegriff auch gegen einen anderen tauschen, und
- schließlich gibt es die Möglichkeit, das gerade rechts vom Cursor befindliche
- Wort auch an anderer Stelle ausfindig zu machen.
-
- Beachte: Der GME kann nur Suchbegriffe finden, die vollständig in einer
- Zeile stehen. Er kann auch nicht Zeilenenden in den Suchbegriff
- aufnehmen. Diese Beschränkungen werden eventuell in künftigen
- Versionen aufgehoben. Aufgrund der Eigenart des optimierten
- Suchverfahrens funktioniert die Suche "rückwärts" nur zwischen
- verschiedenen Zeilen - derselbe Suchbegriff innerhalb einer Zeile wird
- also nicht "rückwärts" gefunden. Gehen Sie ggf. in die vorige Zeile.
-
- Wort suchen
-
- Dieser Schalter bestimmt, ob nur ein vollständiges Wort (Donaudampf~
- schiffahrtskapitän wird nicht gefunden, wenn man Donau oder Dampf sucht)
- oder auch ein Teilwort (Muster) gefunden wird.
-
- Grossklein
-
- Dieser Schalter bestimmt, ob der Suchvorgang Groß- und Kleinschreibung
- unterscheidet. Wenn Sie also nicht genau wissen, wie der Suchbegriff
- geschrieben wird, stellen Sie am besten beide Schalter auf AUS (kein
- Häkchen). Ist es aber lästig, daß "Donau" bei allen Wortkombinationen fündig
- wird, stellen Sie zumindest "Wort suchen" auf EIN.
- Der GME 20
- ________________________________________________________
-
-
- Suchen...
-
- Es wird ein Suchbegriff abgefragt. Wurde früher bereits ein Suchbegriff
- eingegeben, wird dieser angeboten (und mit Return oder Pfeil-Nach-Oben oder
- -Unten übernommen). Er kann mit allen in einer Zeile wirksamen Tasten
- (Backspace, Cursor, Delete) editiert werden. Mit Esc(ape) löschen Sie den
- alten Suchbegriff und können einen neuen eingeben.
-
- Schließen Sie den Suchbegriff mit Return oder Pfeil-Nach-Unten ab, so wird
- vorwärts gesucht. Um rückwärts zu suchen, schließen Sie die Eingabe mit
- Pfeil-Nach-Oben ab.
-
- Tauschen...
-
- Auf die Abfrage des Suchbegriffs erfolgt in gleicher Weise die Abfrage des
- Wortes, gegen welches dieser getauscht werden soll. VORSICHT, wenn "Wort
- suchen" und "Grossklein" ausgeschaltet sind!
-
- Nach der Eingabe eines Such- oder Tauschbegriffes erfolgt eine Abfrage
- verschiedener Optionen (einmal Suchen, letztes Vorkommen oder eine
- bestimmte Anzahl von Malen suchen).
-
- Pick-Wort
-
- Entspricht --> "Suchen..." (s. o.), jedoch wird das Wort ab der Cursorposition
- als Vorgabe präsentiert. Die Suche beginnt automatisch am Textanfang, man
- findet also zunächst das erste Vorkommen des Wortes im Text.
-
- Pick-Tauschen
-
- Wie Pick-Wort, jedoch wird auch ein Tauschbegriff abgefragt.
-
- Nochmal suchen
-
- Der letzte Suchbegriff wird erneut gesucht (nächstes Vorkommen).
- Der GME 21
- ________________________________________________________
-
-
- 4.6 Das Editieren-Menü
-
-
-
-
-
-
-
-
-
- In diesem Menü werden einige allgemeine Bearbeitungsweisen eingestellt. Dazu
- kommen ein paar Befehle, die für den GME eigentümlich sind. Dieser Editor
- kann beliebig viele Texte im Speicher verwalten, zwischen denen man beliebig
- hin- und herspringen und Textblöcke tauschen kann. Er ist dabei nicht an eine
- bestimmte Anzahl von Fenstern oder Puffern gebunden - die Anzahl
- beziehungsweise der Gesamtumfang der Texte wird lediglich durch den
- verfügbaren (freien) Arbeitsspeicher Ihres Computers beschränkt. Diese
- Eigenschaft unterscheidet ihn von fast allen anderen Editoren, die entweder
- nur so viele Texte editieren können, wie GEM-Fenster verfügbar sind, oder die
- sonst eine willkürliche Beschränkung aufweisen. Natürlich ist es richtig, daß
- man im Normalfall nicht 10, 20 oder 50 Texte gleichzeitig im Speicher braucht
- - aber jede willkürliche Grenze kann sich als lästig erweisen.
-
- Überschreiben
-
- Dieser Schalter bestimmt, ob der Editor im Einfüge- oder Überschreibmodus
- arbeitet. Umschaltung auch mit der Insert-Taste.
-
- Autoindent
-
- Schaltet den halbautomatischen Einrückmodus um, dh. der Editor geht nach
- einem Return unter den Anfang der vorigen Zeile (EIN) oder zurück zum linken
- Bildschirmrand. Für die Eingabe "strukturierter" Programmtexte bevorzugt man
- den Autoindent-Modus.
-
- Nächster Text
-
- Die Anzeige wechselt auf den nächsten im Speicher befindlichen Text (falls
- mehr als einer vorhanden ist). Wenn sich leere Puffer im Speicher befinden
- (z.B. durch mehrere --> "Neu"- Befehle, siehe Datei-Menü), können auch
- Leeranzeigen erfolgen. Die Texte sind immer zu einem "Ring" verkettet, das
- heißt, nach dem letzten Text führt dieser Befehl wieder auf den ersten. Gibt
- es nur einen Text, so ist dieser selbst immer sein "nächster Text".
- Der GME 22
- ________________________________________________________
-
-
- Hintergrund
-
- Hat man mehrere Texte im Speicher, so ist das "Durchhangeln" zu einem
- bestimmten Text recht lästig (siehe auch --> Menü "Texte", das jedoch in der
- Version 1.0 noch nicht existiert). Dann kann es vorteilhaft sein, sich jeweils
- einen bestimmten Text auf einer Taste zu merken, so daß man zwischen
- Vorder- und Hintergrundtext mit einem Tastendruck hin und herspringen kann.
- Zum Umschalten dient eine im Menü angezeigte Funktions-Taste (oder das
- Anklicken dieses Befehls).
-
- Mit jeder Ausführung des Befehls tauschen die Texte ihre Plätze. Es können
- sich jedoch mehrere Texte (TextA, TextB, TextC, TextD usw.) im Speicher
- befinden. Auf irgendeine Weise muß man daher festlegen, zwischen welchen
- beiden Texten diese Schnellumschaltung erfolgen soll. Dabei gilt folgende
- einfache Regel: Der Text, der im Moment, in dem man den "Hintergrund"-
- Befehl eingibt, zu sehen ist, wird in den Hintergrund übernommen. Der zuletzt
- als "Hintergrund" übernommene Text gelangt zur Anzeige. Ist das nicht der
- gewünschte Text, sucht man diesen einfach durch mehrfache Eingabe des
- "Nächster Text"- Befehls. Erneute Eingabe des Hintergrund-Befehls führt dann
- auf den vorigen Text zurück.
-
- Block einrücken
-
- Dies ist ein etwas ungewöhnlicher Befehl. Er geht davon aus, daß man zuvor
- einen Block markiert hat (siehe --> Block-Menü oben). Der (noch hervor~
- gehobene) Block kann nun in einer tabellarischen Weise bearbeitet werden, dh.
- jedes eingegebene oder gelöschte Zeichen wirkt sich auf eine ganze Spalte
- aus, die so lang ist wie der markierte Block. Jederzeit können Sie mit dem
- Cursor nach rechts oder links fahren. Gelöschte Spalten gehen verloren.
- Beendet wird diese Arbeitsweise mit dem --> "Beenden"-Befehl (Esc(ape)). Am
- besten probieren Sie es einmal aus!
- Der GME 23
- ________________________________________________________
-
-
- 4.7 Das Programm-Menü
-
-
-
-
-
-
-
-
-
- Hier finden Sie die Befehle zusammengefaßt, mit denen der Editor Aktivitäten
- des MM2-Programmiersystems steuern kann, also einen Programmtext
- übersetzen oder ein Make starten bzw. das fertige Programm anschließend
- laufen lassen.
-
- Compilieren
-
- Der Compiler startet. Er übersetzt den vom Editor gerade angezeigten Text
- aus dem Arbeitsspeicher (der Text muß also nicht vorher gesichert sein, es
- wird die im Speicher befindliche Version übersetzt). Wenn Sie mehrere Texte
- im Editor geladen haben, können Sie diese nacheinander übersetzen, indem Sie
- vorher mit dem --> "Nächster Text"- oder --> "Hintergrund"-Befehl (siehe
- Menü Editieren) den gewünschten Text angesprungen haben.
-
- Datum
-
- Zeigt das vom Betriebssystem vergebene Datum der gerade bearbeiteten Datei
- an. In diesem Zusammenhang ist interessant, daß der Editor nach dem
- Compilieren einer Datei (aus dem Speicher) beim nachfolgenden (!) Speichern
- der dazu gehörigen Textdatei deren Uhrzeit auf den Zeitpunkt der Übersetzung
- zurücksetzt. Anderenfalls würde ein daraufhin aktiviertes Make (das sich am
- Datums- und Uhrzeiteintrag von Text- und Codedateien orientiert) die Datei
- nochmals übersetzen, was nicht notwendig wäre.
-
- Ende & Comp.
-
- Heißt eigentlich: "Ende und Compilieren". Das heißt, der Editor wird (nach
- automatischem Speichern aller Quellen) verlassen und der Compiler "Offline"
- gestartet. Dies kann zum Beispiel erforderlich sein, wenn der verfügbare
- Arbeitsspeicher nicht ausreicht, um Editor und Compiler gleichzeitig "resident"
- zu halten. Oder auch dann, wenn man im Zusammenhang mit der Übersetzung
- den Editor verlassen will.
- Der GME 24
- ________________________________________________________
-
-
- Ende & Ausf.
-
- Wie --> "Ende & Comp.", jedoch mit anschließenden Start des fertigen
- Programms (falls keine Fehler aufgetreten sind).
-
- Make
-
- Sichert alle Dateien automatisch, verläßt den Editor und startet das Make mit
- der Default-Make-Datei (siehe Bedienung: Shell, Umgebungsinformationen).
-
- Make & Ausf.
-
- Wie --> "Make"; bei erfolgreicher Übersetzung wird das fertige Programm
- anschließend gestartet.
- Der GME 25
- ________________________________________________________
-
-
- 4.8.1 Reine Tastaturbefehle
-
- Einige wenige Befehle sind nur über die Tastatur verfügbar - hauptsächlich
- wegen ihrer untergeordneten Wichtigkeit. So zum Beispiel das Löschen von
- Blockmarken ohne sonstige Wirkung. Im Abschnitt 5.1 erfahren Sie, wie Sie
- die Tastenbelegungen nach Ihrem eigenen Geschmack ändern können.
-
- Lösche Blockmarken
-
- Hebt zuvor gesetzte Blockmarken auf, die Hervorhebung verschwindet wieder.
- Standardmäßig auf ^KH.
-
- Lösche Wort
-
- Löscht vorwärts vom Cursor bis zur nächsten Wortgrenze. Eine Wortgrenze
- definiert sich weitestgehend nach den syntaktischen Regeln einer höheren
- Programmiersprache, d.h. Leerzeichen, Kommata, Semikolons, Punkte etc.
- bilden Wortgrenzen. Standardmäßig auf ^T und auf sDelete.
-
- Merke Zeile
-
- Merkt sich die Zeile, in welcher der Cursor gerade steht, in einem besonderen
- Speicher. Die Zeile kann durch --> "Zeile kopieren" oder --> "Zeile rückholen"
- an eine andere Stelle oder in einen anderen Text kopiert werden. Home-Taste.
-
- Lösche Zeile
-
- Löscht und merkt sich die Zeile, in welcher der Cursor gerade steht, in einem
- besonderen Speicher. Die Zeile kann durch --> "Zeile kopieren" oder -->
- "Zeile rückholen" an eine andere Stelle oder in einen anderen Text kopiert
- werden. ^Y und sClr.
-
- Zeile wie vorher
-
- Dieser Befehl wirkt nur, solange man eine Zeile, in der Veränderungen
- vorgenommen wurden, nicht verlassen oder einen Befehl eingegeben hat. Unter
- diesen Voraussetzungen wird der alte Zustand der Zeile wieder hergestellt.
- Undo-Taste.
-
- Zeile kopieren
-
- Fügt bei der aktuellen Cursorposition eine vorher mit --> "Merke Zeile" oder
- "Lösche Zeile" gemerkte Zeile ein. sUndo.
- Der GME 26
- ________________________________________________________
-
-
- Zeile rückholen
-
- Holt eine Zeile aus dem "Zeilenstack" und fügt sie bei der aktuellen Cursor~
- position ein. Der Zeilenstack wird durch den wiederholt ausgeführten Befehl
- --> "Lösche Zeile" oder --> Wirkung. einfach Undo, wenn Undo zum
- zweitenmal gedrückt wird oder vorher die aktuelle Zeile nicht verändert
- worden war. D.h. Undo bewirkt immer zuerst ein "Zeile wiederherstellen" und
- dann ein "Zeile rückholen". Wenn der Zeilenstack leer ist, hat die Taste keine
- Wirkung.
-
-
- 4.8.2 Cursor-Befehle
-
- Die verschiedenen Cursorbefehle erscheinen nicht in einem eigenen Menü, da
- sie sehr leicht merkbar über die dafür vorgesehen Pfeiltasten in Kombination
- mit Shift und Control sowie teilweise auch mit der Maus ausführbar sind.
-
- Alle Cursorbewegungen folgen dem Prinzip der "Dramatisierung". Damit ist
- folgendes gemeint: Die Taste Pfeil-nach-links bewegt den Cursor um ein
- Zeichen nach links. Zusammen mit der Shift- Taste wird der Befehl
- "dramatischer" - der Cursor springt um ein Wort nach links. Mit Control
- schließlich springt er an den Anfang der Zeile.
-
- Pfeil nach oben bewirkt ensprechend den Sprung um eine Zeile, einen
- Bildschirm nach oben oder an den Anfang der Datei.
-
- Zeichen nach links, nach rechts
-
- Links- oder Rechtspfeil, auch ^S oder ^D.
-
- Wort links, Wort rechts
-
- Cursor springt um ein Wort nach links, Cursor springt um ein Wort nach
- rechts. Beide Befehle können mit Shift und der Links- bzw. Rechtspfeiltaste
- ausgelöst werden, oder mit den Wordstar- Kombinationen ^A, ^F.
-
- Zeilenanfang und Zeilenende
-
- Cursor springt zum Anfang oder Ende der Zeile. Befindet er sich schon dort,
- geht er zum Ende der vorigen bzw. Anfang der nächsten Zeile. Auslösung auch
- mit Control-Links oder Rechtspfeil und mit ^QS, ^QD.
-
- Seite nach oben und nach unten
-
- Mit Shift-Pfeil-nach-oben oder nach-unten auslösbar sowie ^R und ^C.
- Der GME 27
- ________________________________________________________
-
-
- Zum Textanfang/Textende
-
- Mit Control-Pfeil-nach-oben oder nach-unten auslösbar sowie ^QR, ^QC.
-
- Hochrollen bzw. Runterrollen
-
- Will man erreichen, daß beim Scrollen der Cursor in seiner alten Textzeile
- bleibt (und entsprechend mit nach oben oder unten rückt) klickt man in die
- Statuszeile oder ganz nahe an den unteren Bildschirmrand. Eine entsprechende
- Wirkung hat es, wenn man ganz nah an den rechten oder linken Bildschirmrand
- klickt (oder wenn der Cursor diese überschreitet). WS-Kombinationen (WS:
- Word-Star) sind ^W und ^Z.
- Der GME 28
- ________________________________________________________
-
-
- 5.1 Tastatur konfigurieren
-
- Die Tastatur des GME kann, was die Befehle betrifft, beliebig konfiguriert
- werden. Dazu muß der Quelltext des Moduls GMEConfig ("GMECONFI.I")
- verändert und neu compiliert werden.
-
- Am Ende des Moduls finden Sie den Prozeduraufruf:
-
- InitTastatur (Tastatur);
-
- Diese Prozedur richtet die sogenannten Tastaturebenen ein. Eine Tastaturebene
- ist zum Beispiel die ganze Tastatur, eine zweite die ganze Tastatur mit Shift,
- eine dritte die ganze Tastatur mit Control usw. Auch die Kombinationen der
- Statustasten, wie Shift+Control, Shift+Alternate, bilden eigene Ebenen. Durch
- Ausnutzung aller Kombinationen wäre es möglich, alle Tasten 16fach zu
- belegen, das wird jedoch nicht ausgenutzt.
-
- PROCEDURE InitTastatur (VAR T: eineTastatur);
- VAR index: CARDINAL;
- BEGIN
- FOR index := 0 TO cTastaturEbenen DO
- NewTastenebene (T index );
- InitTastenebene (CAST (einStatus, index), T index );
- InitFunktionstasten (CAST (einStatus, index), T index );
- END (* FOR *);
- InitControl (T CAST (CARDINAL, einStatus Control ) );
- InitAlternate (T CAST (CARDINAL, einStatus Alternate ) );
- END InitTastatur;
-
- Die Prozedur ruft ihrerseits "NewTastenebene" (für alle möglichen Ebenen)
- auf. Für unsere Zwecke interessant sind InitTastenebene und
- InitFunktionstasten sowie die separaten Aufrufe von InitControl und
- InitAlternate (außerhalb der FOR- Schleife).
-
- Um die Arbeitsweise der Tastaturabfrage im GME zu verstehen, müssen wir
- uns kurz den Datentyp "einTasteneintrag" ansehen, der u. a. von der
- exportierten Universalprozedur "LiesTaste" zurückgegeben wird.
- Der GME 29
- ________________________________________________________
-
-
- einTasteneintrag = RECORD
- CASE TT: einTastenTyp OF
- keineTaste: |
- Zeichen: zch: CHAR |
- Befehl: bef: einBefehl |
- String: str: einLinePointer |
- Makro: mak: einMakroPointer |
- Mausklick: x, y: CARDINAL |
- Tastenebene: teb: einTastaturPointer |
- END (* CASE *);
- END (* einTasteneintrag *);
-
-
- Dieser Varianten-Record teilt zunächst jedem Tasteneintrag einen Typ zu -
- beispielsweise "Zeichen". Wichtig für uns sind die Typen "Befehl" und
- "Tastenebene". Das Legen von Strings auf Tasten (damit könnte man z. B. auf
- Shift-Alternate-M das Wort MODULE etc. legen) ist im GME zur Zeit noch
- nicht implementiert, auch keine Makros - es handelt sich also nur um Voraus~
- deklarationen für künftige Erweiterungen.
-
- Eine Tastenebene ist eine Liste (Array) von lauter Tasteneinträgen. Da ein
- Eintrag wieder ein Pointer auf eine Tastenebene sein kann, lassen sich die
- Wordstar- oder Turbo-(MS-DOS)-Editor-Befehlsfolgen wie ^KB, ^KK
- (Blockmarken setzen) usw. damit realisieren.
-
- Die ASCII-Zeichen ("A", "B", "a", "b" usw.) werden beim GME nicht über die
- eigene Tastatur-Tabelle des Editors geholt, sondern vom TOS übernommen.
- Das hat den Vorteil, daß die nationalen Zeichensätze mit ihren oft vertauschten
- Sonderzeichen und zum Teil auch Buchstaben automatisch richtig angepaßt
- werden.
-
- Der tiefere Grund, warum überhaupt eine eigene Tastaturtabelle benutzt wird,
- liegt u. a. darin, daß sich sonst die Cursortasten nicht symmetrisch mit Shift
- und Control auswerten lassen, da TOS hier leider ganz unsystematisch
- vorgeht.
-
- Die Tasten mit einer durch ihre Aufschrift oder ein Symbol (Pfeil) gekenn~
- zeichneten Funktion, einschließlich F1 bis F10, werden von "InitFunktionstasten"
- belegt.
-
- Alle Tasten werden im GME mit einem Aufzählungstyp (einKey) bezeichnet.
- Zusammen mit der Ebene, die als Index (0..15) oder als Menge ( Shift,
- Control , Alternate usw.) bezeichnet werden kann, wird ein Tastenanschlag
- vollkommen eindeutig bezeichnet. Es muß nun nur jedem solchen Tasteneintrag
- ein bestimmter Rückgabewert zugeordnet werden.
- Der GME 30
- ________________________________________________________
-
-
- Man kann beim GME einen Befehl oft auf drei oder vier verschiedene Weisen
- (durch eine Funktionstaste, eine Controltastenfolge, einen Mausklick oder durch
- Anklicken eines Eintrags in der Menüleiste) eingeben. Der Editor selbst merkt
- den Unterschied nicht - die Befehle werden "normiert" an ihn zurückgegeben;
- dazu dient der Aufzählungstyp "einBefehl"(siehe auch die Prozedur
- InitMenuTabelle, die die Verknüpfung zwischen GEM-Menüeinträgen und
- GME-Befehlen herstellt).
-
-
- 5.1.1 Funktionstasten
-
- Die lokalen Prozeduren "SetzF" (alle Funktionstasten F1 bis F10) und SetzC
- (alle Tasten von Esc bis Cursor-Rechtspfeil - genaue Zuordnung siehe
- Definition im Programmtext) setzen in einer an "InitFunktionstasten"
- übergebenen Tastaturebene die betreffenden Tasten.
-
- IF (keyStatus = einStatus )
- OR (keyStatus = einStatus Caps ) THEN
- SetzF (SuchString, StriTausch, PickWort, WeitSuch, nothing,
- Paste, zurAMark, zurEMark, zur1Mark, zur2Mark);
- SetzC (Quit, tabulator, DelLChar, DelRChar, return,
- help, RestoreCurrentLine,
- insert, cursup, PopCopyLine,
- cursleft, cursdown, cursright);
- ELSIF (keyStatus = einStatus Shift )
- OR (keyStatus = einStatus Shift, Caps ) THEN
- SetzF (SuchWort, WortTausch, PickTausch, zuNrZeile, QueryError,
- CopyToClipboard, setAMark, setEMark, set1Mark, set2Mark);
- SetzC (QuitCompile, backtab, DelLWort, DelRWort, return,
- EditBlock, CopyLastBufferLine,
- indent, Seitup, PopDeleteLine,
- Wortleft, Seitdown, Wortrigt);
-
- Diese (InitFunktionsTasten entnommene) Anweisungsfolge bestimmt zum
- Beispiel, daß auf der Taste F1 ohne Shift, aber mit oder ohne CapsLock, der
- Befehl "SuchString" sitzt, auf F2 StriTausch usw. Mit Shift sind es dagegen
- die Befehle "SuchWort" und "WortTausch". Leicht zu erkennen ist auch die
- Belegung der Cursortasten ohne und mit Shift. Um die Belegung zu ändern,
- braucht man nur die bei den Aufrufen eingesetzten Befehlsnamen zu ändern
- (Beachten Sie, daß eine Belegung der Cursortasten mit Alternate-Kombina~
- tionen wirkungslos ist, da der Tastaturprozessor diese bereits in simulierte
- Mausbewegungen umwandelt).
- Der GME 31
- ________________________________________________________
-
-
- 5.1.2 Alternate- und Controltasten
-
- Sehr einfach zu verstehen ist die Belegung der Alternate-Tastenkombinationen:
-
- PROCEDURE InitAlternate (T: einTastaturPointer);
- BEGIN
- SetControl (T, Ta, QuitCompileRun); (* Speichern und RETURN 4 *)
- SetControl (T, Tc, QuitCompile); (* = Compilieren aus d. Editor! *)
- SetControl (T, Td, Compile); (* Im Speicher compilieren *)
- SetControl (T, Tm, Make); (* RETURN 3 *)
- SetControl (T, Tr, MakeExec); (* Quit Return 4 *)
- SetControl (T, Tt, ZeitUndDatum);
- SetControl (T, Tx, ExitEditor);
- END InitAlternate;
-
-
- Dies wird zusammen mit dem Aufruf verständlich:
-
- InitAlternate (T CAST (CARDINAL, einStatus Alternate ) );
-
- Der Prozedur wird die Tastenebene "Alternate" übergeben. Es sind nur einige
- Alternate-Kombinationen belegt, Sie könnten in die Prozedur noch weitere
- eintragen, etwa auch, um die Tasten F1 bis F10 mit Alternate zu belegen, falls
- Sie das wünschen.
-
- Die Controltasten-Belegungen sind etwas komplizierter.
-
- Sehen Sie sich die relativ lange Prozedur InitControl im Quellcode an. Sie
- enthält für jede Taste einen Aufruf, die meisten sind SetControl-Aufrufe (wie
- in InitAlternate), die direkt einen Befehl auf die Taste legen - zum Beispiel
- Cursleft auf ^S:
-
- SetControl (T, Ts, cursleft);
-
- Bei der Taste K (wie auch bei Q und O) finden wir einen anderen Prozedur~
- aufruf, der eine ganze Tastenebene, also eine Folge von zwei nacheinander zu
- betätigenden Tasten, einrichtet. Stellvertretend ist hier nur der Anfang von
- "CtrlKEbene" wiedergegeben:
-
- PROCEDURE CtrlKEbene (t: einTastaturPointer; k: einKey);
- BEGIN
- NewTastenebene (t^ k .teb); t^ k .TT := Tastenebene;
- InitTastenebene (einStatus , t^ k .teb);
- WITH t^ k DO
- SetControl (teb, T1, set1Mark);
- SetControl (teb, T2, set2Mark);
- SetControl (teb, T3, set3Mark);
- Der GME 32
- ________________________________________________________
-
-
- Die ersten drei Anweisungen initialisieren eine neue Tastenebene - das ist
- wichtig, falls Sie selbst Prozeduren schreiben wollen, um beispielsweise
- abweichend auf ^M eine eigene Ebene einzurichten. Der zweite Parameter der
- Prozedur ist die Taste, auf der die Ebene eingerichtet werden soll. Unter der
- WITH-Anweisung folgen dann die Befehlseinträge für die jeweils als zweite zu
- betätigende Taste. Also ^K1 um die Marke 1 zu setzen.
-
-
- 5.1.3 Resourcefile - Menüleiste
-
- Wenn Sie das Resource-File verändern, müssen Sie die vom Resource-
- Construction-Programm ausgegebenen Konstanten in den Anfang des Moduls
- kopieren (unter dem entsprechenden Kommentar) und eventuell auch die
- Prozedur InitMenuTabelle ändern. Beachten Sie, daß eventuell die darüber
- stehende Konstante "cMaxMenu" für die Anzahl der Menü-Befehle geändert
- werden muß. So können Sie sich auch die GEM-Menüleiste und damit die
- Bedienung des Editors über diese nach Belieben selbst festlegen
- Der GME 33
- ________________________________________________________
-
-
- 5.2 Editor mit/ohne GME.GME konfigurieren
-
- Der GME wählt beim erstmaligen Start eine bestimmte Voreinstellung,
- beispielsweise, ob er im Überschreib- oder Einfügemodus arbeitet, ob wort-
- oder musterweise gesucht wird etc. Diese Einstellungen nimmt die Prozedur
- "InitConfig" vor, die sich ebenfalls im Modul GMEConfig befindet. In dieser
- Prozedur finden Sie zwei Beispiele für die Initialisierung von Betriebsweisen
- (eines auskommentiert):
-
- (* Beispiel 1: Automatisch einrücken ein, BAK-Datei erzeigen ein *)
- Modus := Moden ControlZeichen, AutoIndent, TabFiltern, MakeBAK ;
-
- (* Beispiel 2: Außerdem Konfiguration laden u. zu Texten speichern: *)
- Modus := Moden ControlZeichen, AutoIndent, TabFiltern, MakeBAK,
- KonfigSpeichern ;
-
- Sie können beliebige der Flag-Konstanten aus dem Aufzählungstyp "Mode"
- verwenden. Die restlichen Zuweisungen in der Prozedur sollten tunlichst nicht
- verändert werden.
-
- Die Arbeitsweise ist so: Zunächst wird ein zentraler Puffer angelegt, der die
- Standardkonfiguration enthält (ConfigInit ist FALSE). Wenn (anschließend)
- ConfigInit TRUE ist, werden später angelegte Textpuffer durch Kopieren der
- Werte aus dem ConfigPuffer initialisiert.
-
- Wenn im ConfigPuffer, also im oberen Teil der Prozedur, das Flag
- "KonfigSpeichern" eingefügt wurde, so lädt der Editor jedoch beim Starten die
- Datei GME.GME, die individuelle Voreinstellungen enthält, die sich auch nach
- Verändern abspeichern lassen (--> 4.2 Konfiguration sichern). Außerdem wird
- dann zu jeder Textdatei eine GME-Datei mit diesem Record gespeichert, der
- zusätzlich auch die aktuelle Postion des Cursors und der Suchmarken enthält.
- Diese Einstellung kann während der Sitzung mit dem Editor auch individuell
- verändert werden.
- Der GME 34
- ________________________________________________________
-
-
- Johannes Leckebusch
-
- Besonderer Dank an Hartwig Constien und Peter Hellinger, meine beiden
- "Weggefährten" während der Entwicklung des G2E, von dem der GME "nur"
- eine Untermenge (mit eigenen Erweiterungen) ist. Unvergesslich wird uns die
- Grillparty bleiben, auf der wir uns, nachdem wir uns seit Monaten bzw. Jahren
- über die "MAUS"-Mailbox kannten, zum erstenmal von Angesicht zu Angesicht
- sahen.
-
- Ohne diese und manche andere Freunde wäre der Editor nie geworden, was er
- heute ist. Erwähnen muß ich auch Wolfgang Huber, der mich Jahre zuvor -
- vergeblich - warnte: "Nun fang bloß nicht an, einen eigenen Editor zu program~
- mieren" - genau das hat mich nämlich die folgenden Jahre überwiegend
- beschäftigt und von anderen, vielleicht wichtigeren (?) Tätigkeiten abgehalten.
- Schließlich danke ich den Lesern gewisser Zeitschriften, die mir all die Jahre
- die Treue gehalten haben und die sich nach so langer Zeit immer noch
- sporadisch nach einer alten oder neuen Fassung des "TLGE" erkundigen. Ihnen
- sei an dieser Stelle versichert: Der TLGE lebt - wenn er jetzt auch G2E heißt.
- Näheres wird sehr bald zu hören oder zu lesen sein!
-
- Schließlich danke ich Thomas Tempelmann alias "TT" für seinen Auftrag, der
- zur ersten "kommerziellen" Version der Golem-Editor-Familie geführt hat. Und
- Arnd Beißner und Julian Reschke für ihre nimmermüde Kritik an einem so
- penetranten GEM-Ignoranten, wie ich einer bin, und wem noch alles? Wen ich
- vergessen habe, der fühle sich ebenfalls bedankt!
-